home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 April: Mac OS SDK / Dev.CD Apr 98 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / AIncludes / MoviesFormat.a < prev    next >
Encoding:
Text File  |  1998-02-12  |  21.5 KB  |  554 lines  |  [TEXT/MPS ]

  1. ;
  2. ;    File:        MoviesFormat.a
  3. ;
  4. ;    Contains:    QuickTime Interfaces.
  5. ;
  6. ;    Version:    Technology:    QuickTime 3.0
  7. ;                Release:    Universal Interfaces 3.1
  8. ;
  9. ;    Copyright:    © 1990-1998 by Apple Computer, Inc., all rights reserved
  10. ;
  11. ;    Bugs?:        Please include the the file and version information (from above) with
  12. ;                the problem description.  Developers belonging to one of the Apple
  13. ;                developer programs can submit bug reports to:
  14. ;
  15. ;                    devsupport@apple.com
  16. ;
  17. ;
  18.     IF &TYPE('__MOVIESFORMAT__') = 'UNDEFINED' THEN
  19. __MOVIESFORMAT__ SET 1
  20.  
  21.     IF &TYPE('__MACTYPES__') = 'UNDEFINED' THEN
  22.     include 'MacTypes.a'
  23.     ENDIF
  24.     IF &TYPE('__MOVIES__') = 'UNDEFINED' THEN
  25.     include 'Movies.a'
  26.     ENDIF
  27.  
  28.  
  29. kMovieVersion                    EQU        0                    ; version number of the format here described 
  30. ; ****************************************
  31. ;*
  32. ;*   General Types -
  33. ;*        These types are used in more than one of the
  34. ;*        directory types.
  35. ;*
  36. ;***************************************
  37.  
  38. ;  MoviesUserData is the type used for user data in movie and track directories 
  39. MoviesUserData            RECORD 0
  40. size                     ds.l    1                ; offset: $0 (0)        ;  size of this user data 
  41. udType                     ds.l    1                ; offset: $4 (4)        ;  type of user data 
  42. data                     ds.b    1                ; offset: $8 (8) <-- really an array of length one ;  the user data 
  43.                          ORG 10
  44. sizeof                     EQU *                    ; size:   $A (10)
  45.                         ENDR
  46. UserDataAtom            RECORD 0
  47. size                     ds.l    1                ; offset: $0 (0)
  48. atomType                 ds.l    1                ; offset: $4 (4)
  49. userData                 ds        MoviesUserData ; offset: $8 (8) <-- really an array of length one
  50. sizeof                     EQU *                    ; size:   $12 (18)
  51.                         ENDR
  52. ;  MoviesDataDescription tells us where the data for the movie or track lives.
  53. ;   The data can follow the directory, be in the datafork of the same file as the directory resource,
  54. ;   be in the resource fork of the same file as the directory resource, be in another file in the
  55. ;   data fork or resource fork, or require a specific bottleneck to fetch the data. 
  56.  
  57. ; ****************************************
  58. ;*
  59. ;*   MediaDirectory information -
  60. ;*        The MediaDirectory is tightly coupled to the data.
  61. ;*
  62. ;***************************************
  63.  
  64.  
  65. SampleDescriptionAtom    RECORD 0
  66. size                     ds.l    1                ; offset: $0 (0)
  67. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'stsd' 
  68. flags                     ds.l    1                ; offset: $8 (8)        ;  1 byte of version / 3 bytes of flags 
  69. numEntries                 ds.l    1                ; offset: $C (12)
  70. sampleDescTable             ds        SampleDescription ; offset: $10 (16) <-- really an array of length one
  71. sizeof                     EQU *                    ; size:   $20 (32)
  72.                         ENDR
  73. ;  TimeToSampleNum maps physical sample time to physical sample number. 
  74. TimeToSampleNum            RECORD 0
  75. sampleCount                 ds.l    1                ; offset: $0 (0)
  76. sampleDuration             ds.l    1                ; offset: $4 (4)
  77. sizeof                     EQU *                    ; size:   $8 (8)
  78.                         ENDR
  79. TimeToSampleNumAtom        RECORD 0
  80. size                     ds.l    1                ; offset: $0 (0)
  81. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'stts' 
  82. flags                     ds.l    1                ; offset: $8 (8)        ;  1 byte of version / 3 bytes of flags 
  83. numEntries                 ds.l    1                ; offset: $C (12)
  84. timeToSampleNumTable     ds        TimeToSampleNum ; offset: $10 (16) <-- really an array of length one
  85. sizeof                     EQU *                    ; size:   $18 (24)
  86.                         ENDR
  87. ;  SyncSamples is a list of the physical samples which are self contained. 
  88. SyncSampleAtom            RECORD 0
  89. size                     ds.l    1                ; offset: $0 (0)
  90. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'stss' 
  91. flags                     ds.l    1                ; offset: $8 (8)        ;  1 byte of version / 3 bytes of flags 
  92. numEntries                 ds.l    1                ; offset: $C (12)
  93. syncSampleTable             ds.l    1                ; offset: $10 (16) <-- really an array of length one
  94. sizeof                     EQU *                    ; size:   $14 (20)
  95.                         ENDR
  96. ;  SampleToChunk maps physical sample number to chunk number. 
  97. ;  same as SampleToChunk, but redundant first sample is removed 
  98. SampleToChunk            RECORD 0
  99. firstChunk                 ds.l    1                ; offset: $0 (0)
  100. samplesPerChunk             ds.l    1                ; offset: $4 (4)
  101. sampleDescriptionID         ds.l    1                ; offset: $8 (8)
  102. sizeof                     EQU *                    ; size:   $C (12)
  103.                         ENDR
  104. SampleToChunkAtom        RECORD 0
  105. size                     ds.l    1                ; offset: $0 (0)
  106. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'stsc' 
  107. flags                     ds.l    1                ; offset: $8 (8)        ;  1 byte of version / 3 bytes of flags 
  108. numEntries                 ds.l    1                ; offset: $C (12)
  109. sampleToChunkTable         ds        SampleToChunk    ; offset: $10 (16) <-- really an array of length one
  110. sizeof                     EQU *                    ; size:   $1C (28)
  111.                         ENDR
  112. ChunkOffsetAtom            RECORD 0
  113. size                     ds.l    1                ; offset: $0 (0)
  114. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'stco' 
  115. flags                     ds.l    1                ; offset: $8 (8)        ;  1 byte of version / 3 bytes of flags 
  116. numEntries                 ds.l    1                ; offset: $C (12)
  117. chunkOffsetTable         ds.l    1                ; offset: $10 (16) <-- really an array of length one
  118. sizeof                     EQU *                    ; size:   $14 (20)
  119.                         ENDR
  120. SampleSizeAtom            RECORD 0
  121. size                     ds.l    1                ; offset: $0 (0)
  122. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'stsz' 
  123. flags                     ds.l    1                ; offset: $8 (8)        ;  1 byte of version / 3 bytes of flags 
  124. sampleSize                 ds.l    1                ; offset: $C (12)
  125. numEntries                 ds.l    1                ; offset: $10 (16)
  126. sampleSizeTable             ds.l    1                ; offset: $14 (20) <-- really an array of length one
  127. sizeof                     EQU *                    ; size:   $18 (24)
  128.                         ENDR
  129. ShadowSync                RECORD 0
  130. fdSampleNum                 ds.l    1                ; offset: $0 (0)
  131. syncSampleNum             ds.l    1                ; offset: $4 (4)
  132. sizeof                     EQU *                    ; size:   $8 (8)
  133.                         ENDR
  134. ShadowSyncAtom            RECORD 0
  135. size                     ds.l    1                ; offset: $0 (0)
  136. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'stsz' 
  137. flags                     ds.l    1                ; offset: $8 (8)        ;  1 byte of version / 3 bytes of flags 
  138. numEntries                 ds.l    1                ; offset: $C (12)
  139. shadowSyncTable             ds        ShadowSync        ; offset: $10 (16) <-- really an array of length one
  140. sizeof                     EQU *                    ; size:   $18 (24)
  141.                         ENDR
  142. SampleTableAtom            RECORD 0
  143. size                     ds.l    1                ; offset: $0 (0)
  144. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'stbl' 
  145. sampleDescription         ds        SampleDescriptionAtom ; offset: $8 (8)
  146. timeToSampleNum             ds        TimeToSampleNumAtom ; offset: $28 (40)
  147. sampleToChunk             ds        SampleToChunkAtom ; offset: $40 (64)
  148. syncSample                 ds        SyncSampleAtom ; offset: $5C (92)
  149. sampleSize                 ds        SampleSizeAtom ; offset: $70 (112)
  150. chunkOffset                 ds        ChunkOffsetAtom ; offset: $88 (136)
  151. shadowSync                 ds        ShadowSyncAtom ; offset: $9C (156)
  152. sizeof                     EQU *                    ; size:   $B4 (180)
  153.                         ENDR
  154. PublicHandlerInfo        RECORD 0
  155. flags                     ds.l    1                ; offset: $0 (0)        ;  1 byte of version / 3 bytes of flags 
  156. componentType             ds.l    1                ; offset: $4 (4)
  157. componentSubType         ds.l    1                ; offset: $8 (8)
  158. componentManufacturer     ds.l    1                ; offset: $C (12)
  159. componentFlags             ds.l    1                ; offset: $10 (16)
  160. componentFlagsMask         ds.l    1                ; offset: $14 (20)
  161. componentName             ds.b    1                ; offset: $18 (24) <-- really an array of length one
  162.                          ORG 26
  163. sizeof                     EQU *                    ; size:   $1A (26)
  164.                         ENDR
  165. HandlerAtom                RECORD 0
  166. size                     ds.l    1                ; offset: $0 (0)
  167. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'hdlr' 
  168. hInfo                     ds        PublicHandlerInfo ; offset: $8 (8)
  169. sizeof                     EQU *                    ; size:   $22 (34)
  170.                         ENDR
  171. ;  a data reference is a private structure 
  172. ; typedef long                             DataRefAtom
  173.  
  174. DataInfoAtom            RECORD 0
  175. size                     ds.l    1                ; offset: $0 (0)
  176. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'dinf' 
  177. dataRef                     ds.l    1                ; offset: $8 (8)
  178. sizeof                     EQU *                    ; size:   $C (12)
  179.                         ENDR
  180. RgnAtom                    RECORD 0
  181. size                     ds.l    1                ; offset: $0 (0)
  182. atomType                 ds.l    1                ; offset: $4 (4)
  183. rgnSize                     ds.w    1                ; offset: $8 (8)
  184. rgnBBox                     ds        Rect            ; offset: $A (10)
  185. data                     ds.b    1                ; offset: $12 (18) <-- really an array of length one
  186.                          ORG 20
  187. sizeof                     EQU *                    ; size:   $14 (20)
  188.                         ENDR
  189. MatteCompressedAtom        RECORD 0
  190. size                     ds.l    1                ; offset: $0 (0)
  191. atomType                 ds.l    1                ; offset: $4 (4)
  192. flags                     ds.l    1                ; offset: $8 (8)        ;  1 byte of version / 3 bytes of flags 
  193. matteImageDescription     ds        ImageDescription ; offset: $C (12)
  194. matteData                 ds.b    1                ; offset: $62 (98) <-- really an array of length one
  195.                          ORG 100
  196. sizeof                     EQU *                    ; size:   $64 (100)
  197.                         ENDR
  198. MatteAtom                RECORD 0
  199. size                     ds.l    1                ; offset: $0 (0)
  200. atomType                 ds.l    1                ; offset: $4 (4)
  201. aCompressedMatte         ds        MatteCompressedAtom ; offset: $8 (8)
  202. sizeof                     EQU *                    ; size:   $6C (108)
  203.                         ENDR
  204. ClippingAtom            RECORD 0
  205. size                     ds.l    1                ; offset: $0 (0)
  206. atomType                 ds.l    1                ; offset: $4 (4)
  207. aRgnClip                 ds        RgnAtom            ; offset: $8 (8)
  208. sizeof                     EQU *                    ; size:   $1C (28)
  209.                         ENDR
  210. ; ***********************
  211. ;* Media Info Example Structures
  212. ;**********************
  213.  
  214.  
  215. VideoMediaInfoHeader    RECORD 0
  216. flags                     ds.l    1                ; offset: $0 (0)        ;  1 byte of version / 3 bytes of flags 
  217. graphicsMode             ds.w    1                ; offset: $4 (4)        ;  for QD - transfer mode 
  218. opColorRed                 ds.w    1                ; offset: $6 (6)        ;  opcolor for transfer mode 
  219. opColorGreen             ds.w    1                ; offset: $8 (8)
  220. opColorBlue                 ds.w    1                ; offset: $A (10)
  221. sizeof                     EQU *                    ; size:   $C (12)
  222.                         ENDR
  223. VideoMediaInfoHeaderAtom RECORD 0
  224. size                     ds.l    1                ; offset: $0 (0)        ;  size of Media info 
  225. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'vmhd' 
  226. vmiHeader                 ds        VideoMediaInfoHeader ; offset: $8 (8)
  227. sizeof                     EQU *                    ; size:   $14 (20)
  228.                         ENDR
  229. VideoMediaInfo            RECORD 0
  230. size                     ds.l    1                ; offset: $0 (0)        ;  size of Media info 
  231. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'minf' 
  232. header                     ds        VideoMediaInfoHeaderAtom ; offset: $8 (8)
  233. dataHandler                 ds        HandlerAtom        ; offset: $1C (28)
  234. dataInfo                 ds        DataInfoAtom    ; offset: $3E (62)
  235. sampleTable                 ds        SampleTableAtom ; offset: $4A (74)
  236. sizeof                     EQU *                    ; size:   $FE (254)
  237.                         ENDR
  238. SoundMediaInfoHeader    RECORD 0
  239. flags                     ds.l    1                ; offset: $0 (0)        ;  1 byte of version / 3 bytes of flags 
  240. balance                     ds.w    1                ; offset: $4 (4)
  241. rsrvd                     ds.w    1                ; offset: $6 (6)
  242. sizeof                     EQU *                    ; size:   $8 (8)
  243.                         ENDR
  244. SoundMediaInfoHeaderAtom RECORD 0
  245. size                     ds.l    1                ; offset: $0 (0)        ;  size of Media info 
  246. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'vmhd' 
  247. smiHeader                 ds        SoundMediaInfoHeader ; offset: $8 (8)
  248. sizeof                     EQU *                    ; size:   $10 (16)
  249.                         ENDR
  250. SoundMediaInfo            RECORD 0
  251. size                     ds.l    1                ; offset: $0 (0)        ;  size of Media info 
  252. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'minf' 
  253. header                     ds        SoundMediaInfoHeaderAtom ; offset: $8 (8)
  254. dataHandler                 ds        HandlerAtom        ; offset: $18 (24)
  255. dataReference             ds.l    1                ; offset: $3A (58)
  256. sampleTable                 ds        SampleTableAtom ; offset: $3E (62)
  257. sizeof                     EQU *                    ; size:   $F2 (242)
  258.                         ENDR
  259. ;  whatever data the media handler needs goes after the atomType 
  260. MediaInfo                RECORD 0
  261. size                     ds.l    1                ; offset: $0 (0)
  262. atomType                 ds.l    1                ; offset: $4 (4)
  263. sizeof                     EQU *                    ; size:   $8 (8)
  264.                         ENDR
  265. ; ***********************
  266. ;* Media Directory Structures
  267. ;**********************
  268.  
  269. MediaHeader                RECORD 0
  270. flags                     ds.l    1                ; offset: $0 (0)        ;  1 byte of version / 3 bytes of flags 
  271. creationTime             ds.l    1                ; offset: $4 (4)        ;  seconds since Jan 1904 when directory was created 
  272. modificationTime         ds.l    1                ; offset: $8 (8)        ;  seconds since Jan 1904 when directory was appended 
  273. timeScale                 ds.l    1                ; offset: $C (12)        ;  start time for Media (Media time) 
  274. duration                 ds.l    1                ; offset: $10 (16)        ;  length of Media (Media time) 
  275. language                 ds.w    1                ; offset: $14 (20)
  276. quality                     ds.w    1                ; offset: $16 (22)
  277. sizeof                     EQU *                    ; size:   $18 (24)
  278.                         ENDR
  279. MediaHeaderAtom            RECORD 0
  280. size                     ds.l    1                ; offset: $0 (0)
  281. atomType                 ds.l    1                ; offset: $4 (4)
  282. header                     ds        MediaHeader        ; offset: $8 (8)
  283. sizeof                     EQU *                    ; size:   $20 (32)
  284.                         ENDR
  285. MediaDirectory            RECORD 0
  286. size                     ds.l    1                ; offset: $0 (0)
  287. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'mdia' 
  288. mediaHeader                 ds        MediaHeaderAtom ; offset: $8 (8)        ;  standard Media information 
  289. mediaHandler             ds        HandlerAtom        ; offset: $28 (40)
  290. mediaInfo                 ds        MediaInfo        ; offset: $4A (74)
  291. sizeof                     EQU *                    ; size:   $52 (82)
  292.                         ENDR
  293. ; ***********************
  294. ;* Track Structures
  295. ;**********************
  296.  
  297.  
  298. TrackEnable                        EQU        $01
  299. TrackInMovie                    EQU        $02
  300. TrackInPreview                    EQU        $04
  301. TrackInPoster                    EQU        $08
  302. TrackHeader                RECORD 0
  303. flags                     ds.l    1                ; offset: $0 (0)        ;  1 byte of version / 3 bytes of flags 
  304. creationTime             ds.l    1                ; offset: $4 (4)        ;  seconds since Jan 1904 when directory was created 
  305. modificationTime         ds.l    1                ; offset: $8 (8)        ;  seconds since Jan 1904 when directory was appended 
  306. trackID                     ds.l    1                ; offset: $C (12)
  307. reserved1                 ds.l    1                ; offset: $10 (16)
  308. duration                 ds.l    1                ; offset: $14 (20)        ;  length of track (track time) 
  309. reserved2                 ds.l    1                ; offset: $18 (24)
  310. reserved3                 ds.l    1                ; offset: $1C (28)
  311. layer                     ds.w    1                ; offset: $20 (32)
  312. alternateGroup             ds.w    1                ; offset: $22 (34)
  313. volume                     ds.w    1                ; offset: $24 (36)
  314. reserved4                 ds.w    1                ; offset: $26 (38)
  315. matrix                     ds        MatrixRecord    ; offset: $28 (40)
  316. trackWidth                 ds.l    1                ; offset: $4C (76)
  317. trackHeight                 ds.l    1                ; offset: $50 (80)
  318. sizeof                     EQU *                    ; size:   $54 (84)
  319.                         ENDR
  320. TrackHeaderAtom            RECORD 0
  321. size                     ds.l    1                ; offset: $0 (0)        ;  size of track header 
  322. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'tkhd' 
  323. header                     ds        TrackHeader        ; offset: $8 (8)
  324. sizeof                     EQU *                    ; size:   $5C (92)
  325.                         ENDR
  326. EditListType            RECORD 0
  327. trackDuration             ds.l    1                ; offset: $0 (0)
  328. mediaTime                 ds.l    1                ; offset: $4 (4)
  329. mediaRate                 ds.l    1                ; offset: $8 (8)
  330. sizeof                     EQU *                    ; size:   $C (12)
  331.                         ENDR
  332. EditListAtom            RECORD 0
  333. size                     ds.l    1                ; offset: $0 (0)
  334. atomType                 ds.l    1                ; offset: $4 (4)        ;  = elst 
  335. flags                     ds.l    1                ; offset: $8 (8)        ;  1 byte of version / 3 bytes of flags 
  336. numEntries                 ds.l    1                ; offset: $C (12)
  337. editListTable             ds        EditListType    ; offset: $10 (16) <-- really an array of length one
  338. sizeof                     EQU *                    ; size:   $1C (28)
  339.                         ENDR
  340. EditsAtom                RECORD 0
  341. size                     ds.l    1                ; offset: $0 (0)
  342. atomType                 ds.l    1                ; offset: $4 (4)        ;  = edts 
  343. editList                 ds        EditListAtom    ; offset: $8 (8)
  344. sizeof                     EQU *                    ; size:   $24 (36)
  345.                         ENDR
  346. TrackLoadSettings        RECORD 0
  347. preloadStartTime         ds.l    1                ; offset: $0 (0)
  348. preloadDuration             ds.l    1                ; offset: $4 (4)
  349. preloadFlags             ds.l    1                ; offset: $8 (8)
  350. defaultHints             ds.l    1                ; offset: $C (12)
  351. sizeof                     EQU *                    ; size:   $10 (16)
  352.                         ENDR
  353. TrackLoadSettingsAtom    RECORD 0
  354. size                     ds.l    1                ; offset: $0 (0)
  355. atomType                 ds.l    1                ; offset: $4 (4)        ;  = load 
  356. settings                 ds        TrackLoadSettings ; offset: $8 (8)
  357. sizeof                     EQU *                    ; size:   $18 (24)
  358.                         ENDR
  359. TrackDirectory            RECORD 0
  360. size                     ds.l    1                ; offset: $0 (0)
  361. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'trak' 
  362. trackHeader                 ds        TrackHeaderAtom ; offset: $8 (8)        ;  standard track information 
  363. trackClip                 ds        ClippingAtom    ; offset: $64 (100)
  364. edits                     ds        EditsAtom        ; offset: $80 (128)
  365. media                     ds        MediaDirectory ; offset: $A4 (164)
  366. userData                 ds        UserDataAtom    ; offset: $F6 (246)        ;  space for extending with new data types 
  367. sizeof                     EQU *                    ; size:   $108 (264)
  368.                         ENDR
  369. ; ****************************************
  370. ;*
  371. ;*   MovieDirectory -
  372. ;*        The MovieDirectory is the top level structure which
  373. ;*        holds the TrackInstance describing where the
  374. ;*        TrackDirectories are.
  375. ;*
  376. ;***************************************
  377.  
  378. MovieHeader                RECORD 0
  379. flags                     ds.l    1                ; offset: $0 (0)        ;  1 byte of version / 3 bytes of flags 
  380. creationTime             ds.l    1                ; offset: $4 (4)        ;  seconds since Jan 1904 when directory was created 
  381. modificationTime         ds.l    1                ; offset: $8 (8)        ;  seconds since Jan 1904 when directory was appended 
  382. timeScale                 ds.l    1                ; offset: $C (12)        ;  Time specifications 
  383. duration                 ds.l    1                ; offset: $10 (16)
  384. preferredRate             ds.l    1                ; offset: $14 (20)        ;  rate at which to play this movie 
  385. preferredVolume             ds.w    1                ; offset: $18 (24)        ;  volume to play movie at 
  386. reserved1                 ds.w    1                ; offset: $1A (26)
  387. preferredLong1             ds.l    1                ; offset: $1C (28)
  388. preferredLong2             ds.l    1                ; offset: $20 (32)
  389. matrix                     ds        MatrixRecord    ; offset: $24 (36)
  390. previewTime                 ds.l    1                ; offset: $48 (72)        ;  time in track the proxy begins (track time) 
  391. previewDuration             ds.l    1                ; offset: $4C (76)        ;  how long the proxy lasts (track time) 
  392. posterTime                 ds.l    1                ; offset: $50 (80)        ;  time in track the proxy begins (track time) 
  393. selectionTime             ds.l    1                ; offset: $54 (84)        ;  time in track the proxy begins (track time) 
  394. selectionDuration         ds.l    1                ; offset: $58 (88)        ;  time in track the proxy begins (track time) 
  395. currentTime                 ds.l    1                ; offset: $5C (92)        ;  time in track the proxy begins (track time) 
  396. nextTrackID                 ds.l    1                ; offset: $60 (96)        ;  next value to use for a TrackID 
  397. sizeof                     EQU *                    ; size:   $64 (100)
  398.                         ENDR
  399. MovieHeaderAtom            RECORD 0
  400. size                     ds.l    1                ; offset: $0 (0)
  401. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'mvhd' 
  402. header                     ds        MovieHeader        ; offset: $8 (8)
  403. sizeof                     EQU *                    ; size:   $6C (108)
  404.                         ENDR
  405. TrackDirectoryEntry        RECORD 0
  406. trackDirectory             ds        TrackDirectory ; offset: $0 (0)            ;  Track directory information 
  407. sizeof                     EQU *                    ; size:   $108 (264)
  408.                         ENDR
  409. MovieDirectory            RECORD 0
  410. size                     ds.l    1                ; offset: $0 (0)
  411. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'moov' 
  412. header                     ds        MovieHeaderAtom ; offset: $8 (8)
  413. movieClip                 ds        ClippingAtom    ; offset: $74 (116)
  414. ;  Track Directories 
  415. track                     ds        TrackDirectoryEntry ; offset: $90 (144) <-- really an array of length one ;  Track directory information 
  416. ;  User data for Movie 
  417. userData                 ds        UserDataAtom    ; offset: $198 (408)    ;  space for user extensions 
  418. sizeof                     EQU *                    ; size:   $1AA (426)
  419.                         ENDR
  420. ; ****************************************
  421. ;***************************************
  422.  
  423. ;  Movie formats and tags 
  424.  
  425.                                                             ; some system defined format IDs 
  426. MOVIE_TYPE                        EQU        'moov'
  427. TRACK_TYPE                        EQU        'trak'
  428. MEDIA_TYPE                        EQU        'mdia'
  429. VIDEO_TYPE                        EQU        'vide'
  430. SOUND_TYPE                        EQU        'soun'
  431. ;  atom id's 
  432.  
  433. MovieAID                        EQU        'moov'
  434. MovieHeaderAID                    EQU        'mvhd'
  435. ClipAID                            EQU        'clip'
  436. RgnClipAID                        EQU        'crgn'
  437. MatteAID                        EQU        'matt'
  438. MatteCompAID                    EQU        'kmat'
  439. TrackAID                        EQU        'trak'
  440. UserDataAID                        EQU        'udta'
  441. TrackHeaderAID                    EQU        'tkhd'
  442. EditsAID                        EQU        'edts'
  443. EditListAID                        EQU        'elst'
  444. MediaAID                        EQU        'mdia'
  445. MediaHeaderAID                    EQU        'mdhd'
  446. MediaInfoAID                    EQU        'minf'
  447. VideoMediaInfoHeaderAID            EQU        'vmhd'
  448. SoundMediaInfoHeaderAID            EQU        'smhd'
  449. GenericMediaInfoHeaderAID        EQU        'gmhd'
  450. GenericMediaInfoAID                EQU        'gmin'
  451. DataInfoAID                        EQU        'dinf'
  452. DataRefAID                        EQU        'dref'
  453. SampleTableAID                    EQU        'stbl'
  454. STSampleDescAID                    EQU        'stsd'
  455. STTimeToSampAID                    EQU        'stts'
  456. STSyncSampleAID                    EQU        'stss'
  457. STSampleToChunkAID                EQU        'stsc'
  458. STShadowSyncAID                    EQU        'stsh'
  459. HandlerAID                        EQU        'hdlr'
  460. STSampleSizeAID                    EQU        'stsz'
  461. STChunkOffsetAID                EQU        'stco'
  462. STChunkOffset64AID                EQU        'co64'
  463. STSampleIDAID                    EQU        'stid'
  464. DataRefContainerAID                EQU        'drfc'
  465. TrackReferenceAID                EQU        'tref'
  466. ColorTableAID                    EQU        'ctab'
  467. LoadSettingsAID                    EQU        'load'
  468. PropertyAtomAID                    EQU        'code'
  469. InputMapAID                        EQU        'imap'
  470. MovieBufferHintsAID                EQU        'mbfh'
  471. MovieDataRefAliasAID            EQU        'mdra'
  472. SoundLocalizationAID            EQU        'sloc'
  473. CompressedMovieAID                EQU        'cmov'
  474. CompressedMovieDataAID            EQU        'cmvd'
  475. DataCompressionAtomAID            EQU        'dcom'
  476. ReferenceMovieRecordAID            EQU        'rmra'
  477. ReferenceMovieDescriptorAID        EQU        'rmda'
  478. ReferenceMovieDataRefAID        EQU        'rdrf'
  479. ReferenceMovieVersionCheckAID    EQU        'rmvc'
  480. ReferenceMovieDataRateAID        EQU        'rmdr'
  481. ReferenceMovieComponentCheckAID    EQU        'rmcd'
  482. ReferenceMovieQualityAID        EQU        'rmqu'
  483. ;  Text ATOM definitions
  484.  
  485. TextBoxAtom                RECORD 0
  486. size                     ds.l    1                ; offset: $0 (0)
  487. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'tbox' 
  488. textBox                     ds        Rect            ; offset: $8 (8)        ;  New text box (overrides defaultTextBox)
  489. sizeof                     EQU *                    ; size:   $10 (16)
  490.                         ENDR
  491. HiliteAtom                RECORD 0
  492. size                     ds.l    1                ; offset: $0 (0)
  493. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'hlit' 
  494. selStart                 ds.l    1                ; offset: $8 (8)        ;  hilite selection start character
  495. selEnd                     ds.l    1                ; offset: $C (12)        ;  hilite selection end character
  496. sizeof                     EQU *                    ; size:   $10 (16)
  497.                         ENDR
  498. KaraokeRec                RECORD 0
  499. timeVal                     ds.l    1                ; offset: $0 (0)
  500. beginHilite                 ds.w    1                ; offset: $4 (4)
  501. endHilite                 ds.w    1                ; offset: $6 (6)
  502. sizeof                     EQU *                    ; size:   $8 (8)
  503.                         ENDR
  504. KaraokeAtom                RECORD 0
  505. numEntries                 ds.l    1                ; offset: $0 (0)
  506. karaokeEntries             ds        KaraokeRec        ; offset: $4 (4) <-- really an array of length one
  507. sizeof                     EQU *                    ; size:   $C (12)
  508.                         ENDR
  509. ;  for ReferenceMovieDataRefRecord.flags
  510.  
  511. kDataRefIsSelfContained            EQU        $01
  512. ReferenceMovieDataRefRecord RECORD 0
  513. flags                     ds.l    1                ; offset: $0 (0)
  514. dataRefType                 ds.l    1                ; offset: $4 (4)
  515. dataRefSize                 ds.l    1                ; offset: $8 (8)
  516. dataRef                     ds.b    1                ; offset: $C (12) <-- really an array of length one
  517.                          ORG 14
  518. sizeof                     EQU *                    ; size:   $E (14)
  519.                         ENDR
  520. ;  for VersionCheckRecord.checkType
  521.  
  522. kVersionCheckMin                EQU        0                    ; val1 is the min. version required
  523. kVersionCheckMask                EQU        1                    ; (gestalt return value & val2) must == val1
  524. QTAltVersionCheckRecord    RECORD 0
  525. flags                     ds.l    1                ; offset: $0 (0)        ;  currently always 0
  526. gestaltTag                 ds.l    1                ; offset: $4 (4)
  527. val1                     ds.l    1                ; offset: $8 (8)
  528. val2                     ds.l    1                ; offset: $C (12)
  529. checkType                 ds.w    1                ; offset: $10 (16)
  530. sizeof                     EQU *                    ; size:   $12 (18)
  531.                         ENDR
  532. ;  some helpful constants for DataRateRecord.dataRate 
  533.  
  534. kDataRate144ModemRate            EQU        1400
  535. kDataRate288ModemRate            EQU        2800
  536. kDataRateISDNRate                EQU        5600
  537. kDataRateDualISDNRate            EQU        11200
  538. kDataRateT1Rate                    EQU        150000
  539. kDataRateInfiniteRate            EQU        $7FFFFFFF
  540. QTAltDataRateRecord        RECORD 0
  541. flags                     ds.l    1                ; offset: $0 (0)        ;  currently always 0
  542. dataRate                 ds.l    1                ; offset: $4 (4)
  543. sizeof                     EQU *                    ; size:   $8 (8)
  544.                         ENDR
  545. QTAltComponentCheckRecord RECORD 0
  546. flags                     ds.l    1                ; offset: $0 (0)        ;  currently always 0 
  547. cd                         ds        ComponentDescription ; offset: $4 (4)
  548. minVersion                 ds.l    1                ; offset: $18 (24)
  549. sizeof                     EQU *                    ; size:   $1C (28)
  550.                         ENDR
  551.  
  552.     ENDIF ; __MOVIESFORMAT__ 
  553.  
  554.